import java.util.Scanner;

/**
 * Creat with IntelliJ IDEA
 * Description
 * User: mamba24
 * Date: 2022-03-24
 * Time: 20:35
 * To BE A Better Person-2020-3-2
 */
public class TestDemo {
    //实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 ,
    // 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
   public void transform(int[] arr){

   }


    public static void main(String[] args) {

    }
    //实现一个方法 sum, 以数组为参数, 求数组所有元素之和.
    public static int sum(int[] arr){
        int tol=0;
        for (int i = 0; i < arr.length; i++) {
            tol+=arr[i];
        }
        return tol;
    }

    public static void main8(String[] args) {
        int[] a={23,65,74,34,99};
        int i=sum(a);
        System.out.println(i);
    }
    //实现一个方法 avg, 以数组为参数, 求数组中所有元素的平均值(注意方法的返回值类型).
    public static double avg(int[] arr){
        int sum=0;
        double avg;
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i];
        }
        avg = (double)sum/(double) arr.length;
        return avg;
    }

    public static void main7(String[] args) {
        int[] arr={1,2,3,4,5,6};
        double avg=avg(arr);
        System.out.println(avg);
    }
    //递归求 N 的阶乘
    public static int fun3(int n){
        if(n==1){
            return 1;
        }else{
            return fun3(n-1)*n;
        }
    }

    public static void main6(String[] args) {
        int n=fun3(3);
        System.out.println(n);
    }
    //递归求 1 + 2 + 3 + ... + 10
    public static int fun2(int n){
        if(n==1){
            return n;
        }else{
            return n+fun2(n-1);
        }
    }

    public static void main5(String[] args) {
        int n=fun2(10);
        System.out.println(n);
    }



    //按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) （递归）
    public static void fun1(int n){
        if(n > 10)
          fun1(n/10);
        System.out.print((n%10)+" ");
    }

    public static void main4(String[] args) {
        int n=1234;
        fun1(n);
    }
    //写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int func(int n) {
        if(n<10){
            return  n%10;
        }else{
            return func(n/10)+n%10;
        }

    }
    public static void main3(String[] args) {
        System.out.println(func(8848));

    }
    //递归求斐波那契数列的第 N 项
    public static int fib(int n){
        if(n==1||n==2){
            return 1;
        }else{
            return fib(n-1)+fib(n-2);
        }
    }
    public static void main2(String[] args) {
        int n;
        int N;
        Scanner sc=new Scanner(System.in);
        n=sc.nextInt();
        N=fib(n);
        System.out.println(N);
    }
    //在同一个类中定义多个方法：
    // 要求不仅可以求两个整数的最大值，还可以求两个小数的最大值，以及两个小数和一个整数的大小关系
    public static void Max(int a,double b){
        if(a>b){
            System.out.println(a+" is max");
        }else{
            System.out.println(b+" is max");
        }
    }
    public static void Max(double a,double b){
        if(a>b){
            System.out.println(a+" is max");
        }else{
            System.out.println(b+" is max");
        }
    }
    public static void Max(int a,int b){
        if(a>b){
            System.out.println(a+" is max");
        }else{
            System.out.println(b+" is max");
        }
    }
    public static void main1(String[] args) {
        int a=3;
        double x=3.6;
        int c=6;
        double a1=0.6;
        Max(a,x);
        System.out.println("==============");
        Max(a,c);
        System.out.println("==============");
        Max(x,a1);
    }
}
